package com.cxh.dao;

import tk.mybatis.mapper.common.Mapper;

import com.cxh.entity.SoundQu;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * 类说明：
 * @author ChenXH
 * @date   2019-01-04 16:06:48
 */
@Repository("soundQuDao")
public interface SoundQuDao extends Mapper<SoundQu> {//需要进行 继承Mapper

	 /**
     * 根据机构Id获得基础问答列表
     *
     * @param orgId 机构Id
     * @return
     */
    List<SoundQu> loadAllByOrg(Integer orgId);

    /**
     * 根据Id获得单条信息
     *
     * @param id
     * @return
     */
    SoundQu findById(Integer id);

    /**
     * 修改问题
     *
     * @param soundQu
     * @return
     */
    void update(SoundQu soundQu);

    /**
     * 新增问题
     *
     * @param soundQu
     * @return
     */
    void add(SoundQu soundQu);

    /**
     * 根据所属单位获得单位下所有的基础问答列表
     *
     * @param orgId
     * @return
     */
    List<Map<String, Object>> loadSoundQuByOrg(Map<String, Object> paramaters);

    /**
     * 根据单位获得单位下的基础问答条数
     *
     * @param orgId
     * @return
     */
    int findCountByOrg(Integer orgId);

    int findCOuntByUser(Integer userId);

    /**
     * 验证本机构下是否存在相同问题
     *
     * @param map
     * @return
     */
    List<SoundQu> checkQuest(Map<String, Object> map);

    /**
     * 根据机器人编码获得机器人问答库
     *
     * @param code 机器人编码
     * @return
     */
    List<SoundQu> loadByCode(String code);

    /**
     * 根据用户Id获得用户所拥有的机器人下所有的基础问答列表
     *
     * @param userId
     * @return
     */
    List<Map<String, Object>> loadByUser(Map<String, Object> map);

    /**
     * 根据用户Id以及问题Id获得
     *
     * @param paramater
     * @return
     */
    List<Map<String, Object>> loadRobotByUserAndQuestion(Map<String, Object> paramater);

    /**
     * 根据问题Id获得问题执行机器人的Id里诶表
     *
     * @param questionId
     * @return
     */
    List<Integer> findRobotByQuestion(Map<String, Object> paramater);

    /**
     * 根据用户获得基础问答里诶表
     *
     * @param userId 用户Id
     * @return
     */
    List<Map<String, Object>> findQuestionsByUser(Map<String, Object> paramater);

    /**
     * 根据用户Id获得用户拥有的问答库
     *
     * @param userId
     * @return
     */
    Integer findCOuntByUserId(Integer userId);

    /**
     * 根据问题及答案关联Id获得问题详细信息
     *
     * @param userId
     * @return
     */
    List<Map<String, Object>> findQquestionByAnId(Integer userId);

    /**
     * 根据Id删除基础问答
     *
     * @param Id 基础问答Id
     */
    void deleteById(Integer Id);

    /**
     * 根据问答获得问题对象
     *
     * @param title 问题标题
     * @return
     */
    SoundQu findQuestionIdByTitle(String title);

    /**
     * 倒叙查询指定条数的未同步数据（仅仅为数据迁移提供服务）
     *
     * @param countRow 数据条数
     * @return
     */
    List<Map<String, Object>> selectListBySynchronize(int countRow);

}
